#include <iostream>
#include <queue>
#include <map>
#include <unordered_map>
#include <vector>
#include <algorithm>
#include <cmath>
#include <string>
#include <cstring>
#include <set>
#include <unordered_set>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pii;
const int N=2e5+10;
int e[N*2],ne[N*2],h[N],idx;
int edg[N*2];
int dis[N];
int st[N];
vector<int> ans;
void add(int a,int b,int c)
{
	e[idx]=b;
	edg[idx]=c;
	ne[idx]=h[a];
	h[a]=idx++;
}
void init(int n)
{
	idx=0;
	ans.clear();
	for(int i=0;i<=n+1;i++)
	{
		h[i]=-1;
		st[i]=0;
	}
}
void dfs(int u)
{
	dis[u]=1;
	for(int i=h[u];~i;i=ne[i])
	{
		int j=e[i];
		if(!st[j])
		{
			st[j]=1;
			dfs(j);
		    dis[u]+=dis[j];
		    if(dis[j]==0)
		    {
		    	ans.push_back(edg[i]); 
			}
		}
	}
	if(dis[u]==3)
	{
		dis[u]=0;
	}
}
void solve()
{
	int n;
	cin>>n;
	for(int i=1;i<=n-1;i++)
	{
		int a,b;
		cin>>a>>b;
		add(a,b,i);
		add(b,a,i);
	}
	st[1]=1;
	dfs(1);
	if(dis[1]==0)
	{
		cout<<ans.size()<<endl;
		for(auto it:ans)
		{
			cout<<it<<' ';
		}
		cout<<endl;
	}
	else
	{
		cout<<-1<<endl;
	}
	init(n);
	
}
int main()
{
	memset(h,-1,sizeof(h));
	int t;
	cin>>t;
	while(t--)
	{
		solve();
	}

	return 0;
}

